package jmine.tec.hydra.driver;

import java.io.InputStream;

import bancosys.tec.datadigester.DigesterBean;
import bancosys.tec.datadigester.DigesterFile;
import bancosys.tec.utils.date.Date;

/**
 * Criado para encapsular o InputStream que será enviado ao Hydra.
 * 
 * @author marco.vieira
 */
public class HydraBean implements DigesterBean {

    /**
     * InputStream que será tratado pelo Hydra.
     */
    private final InputStream inputStream;

    /**
     * Nome do arquivo enviado.
     */
    private final String filename;

    /**
     * Timestamp em que o bean foi criado.
     */
    private final Date downloadTimestamp;

    /**
     * Constrói um HydraBean, guardando a referência ao InputStream e definindo a data de download do arquivo como a data atual.
     * 
     * @param file InputStream que será tratado pelo Hydra.
     */
    public HydraBean(DigesterFile file) {
        this.inputStream = file.getInputStream();
        this.filename = file.getFileName();
        this.downloadTimestamp = new Date();
    }

    /**
     * @return referência ao InputStream a ser tratado pelo Hydra.
     */
    public InputStream getInputStream() {
        return this.inputStream;
    }

    /**
     * @return the filename
     */
    public final String getFilename() {
        return this.filename;
    }

    /**
     * @return timestamp em que foi criado o bean.
     */
    public Date getDownloadTimestamp() {
        return this.downloadTimestamp;
    }

    /**
     * @return <code>true</code>
     */
    public boolean isComplete() {
        return true;
    }

    /**
     * Retorna a data efetiva para os dados deste arquivo.
     * 
     * @return a data efetiva para os dados deste arquivo.
     */
    public Date getFileDate() {
        return this.downloadTimestamp;
    }

    /**
     * @return numero de itens a serem processados nesse digester bean.
     */
    public int getNumberOfItems() {
        return 1;
    }
}
